package com.young.weixin.util;

import com.young.weixin.model.enums.EWxMessageTypeEnum;
import com.young.weixin.model.message.WxBaseMessage;
import com.young.weixin.model.message.WxMessageMapWrapper;
import com.young.weixin.model.message.WxTextMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 消息对象工厂类
 *
 * @author wangjiyu
 * @date 2021/10/5 17:24
 */
public class WxMessageBuilder {

    private static final Logger logger = LoggerFactory.getLogger(WxMessageBuilder.class);

    /**
     * 转换消息对象
     * @param map
     * @return
     */
    public static WxBaseMessage convertMap2Message(WxMessageMapWrapper map) {
        // 消息类型
        EWxMessageTypeEnum messageTypeEnum = EWxMessageTypeEnum.of(map.getMsgType());
        if (messageTypeEnum == null) {
            logger.warn("[转换消息对象] 未知的消息类型={}", map.getMsgType());
            return null;
        }
        // 创建消息对象
        return messageTypeEnum.wxMessageFactory.convert(map);
    }

    /**
     * 构造文本消息
     * @param content 消息内容
     * @param userMessage 入参中的用户消息
     * @return 文本消息对象
     */
    public static WxTextMessage buildBackTextMessage(String content, WxBaseMessage userMessage) {
        WxTextMessage wxTextMessage = (WxTextMessage) EWxMessageTypeEnum.TEXT.wxMessageFactory.build(userMessage.getToUserName(), userMessage.getFromUserName());
        wxTextMessage.setContent(content);
        return wxTextMessage;
    }




}
